home *** CD-ROM | disk | FTP | other *** search
/ Discover the Great Lakes / Discover the Great Lakes.iso / quiz-script.txt < prev    next >
Text File  |  1997-10-09  |  12KB  |  379 lines

  1. Toolbook Scripts for Generic Quiz
  2.  
  3. | Book | Background | Results Page | Certificate Page |
  4.  
  5. Book Scripts
  6.  
  7. to handle enterBook
  8.     system recentUser,qTries
  9.     put "FALSE" into recentUser
  10.     put 0 into qTries
  11. end enterBook
  12.  
  13. --------------------------------
  14. -- general navigation scripts
  15. --------------------------------
  16.  
  17. to handle doQuit
  18.     system theUser
  19.     -- called by quit button
  20.  
  21.     beep 1
  22.     request word 1 of theUser & ", do you want to quit from the"\
  23.     && quote & "Orient Express" & quote && "?" with "no" or\
  24.     "yes"
  25.     if (it is "yes") then; send exit; end if
  26. end doQuit
  27.  
  28. ---------------------------------------------------------------------------
  29.  
  30. | Book | Background | Results Page | Certificate Page |
  31.  
  32. Background Scripts
  33.  
  34. These scripts are available to every card that uses the quiz background
  35.  
  36. to handle enterPage
  37.     -- set up quiz card
  38.  
  39.     system qPointer,qMax,firstTry
  40.  
  41.     -- VARIABLES:
  42.     --       qPointer:      current quiz number
  43.     --       qMax:          total number of questions
  44.     --       firstTry:      =0 if user has not tried at least once
  45.  
  46.     -- update card counter
  47.     put qPointer && "of" && qMax into text of  recordField "count"
  48.      set sysLockScreen to true
  49.  
  50.     -- show answer fields
  51.     send ansVis TRUE
  52.  
  53.     -- reset try flag
  54.     put 0 into firstTry
  55.  
  56.     -- randomly sort the list of answers
  57.     put scrambleItems(4) of this book into fList
  58.  
  59.     -- reset the location of answer fields
  60.     step i from 1 to 4
  61.         get "ans" && item i of fList
  62.                 set the position of recordField it to 430,1200 + i * 900
  63.                 set the position of button it of this background to 345, 1110 + i * 900
  64.     end step
  65.  
  66.     -- hide NEXT button until user tries once
  67.    hide button "next" of this background
  68.  
  69.     set sysLockScreen to false
  70. end enterPage
  71.  
  72. to handle leavePage
  73.     -- clean up card
  74.     system reviewList
  75.  
  76.     send hideHilite
  77.     send hideFb
  78.     send ansVis false
  79.     if the visible of  recordField "help" then
  80.         send showHelp FALSE
  81.     end if
  82. end leavePage
  83.  
  84. to handle ansVis state
  85.     -- toggles visibility of answer fields
  86.     step i from 1 to 4
  87.         set the visible of recordField ("ans" && i) to state
  88.     end step
  89.  
  90. end ansVis
  91.  
  92. to handle checkAnswer
  93.     -- compare users response and show correct feedback
  94.     system firstTry,qScore,reviewList
  95.  
  96.     -- exit if user clicked on last resposne
  97.  
  98.     if the invert of button (name of the target) of this background then;
  99.          break checkAnswer
  100.     end if
  101.  
  102.     -- hilite the button
  103.     send hideHilite
  104.  
  105.     set the invert of button (name of the target) of this background to true
  106.     set sysLockScreen to true
  107.     -- hide all feedback fields
  108.     send hideFB
  109.  
  110.     -- get name of selected answer and show feeback
  111.     get word 2 of the name of the target
  112.  
  113.     show recordField ("fb" && it)
  114.  
  115.    -- score if this was first try
  116.     if firstTry = 0 then;
  117.  
  118.         -- enable NEXT button
  119.         show button "next" of this background
  120.  
  121.         -- check answer with name of current card
  122.         if it=character 3 of the name of this page then;
  123.             increment qScore by 1
  124.         else
  125.             put text of  recordField "topic" & crlf after reviewList
  126.         end if
  127.  
  128.         put 1 into firstTry
  129.     end if
  130.     set sysLockScreen to false
  131.  
  132. end checkAnswer
  133.  
  134. to handle hideHilite
  135.     -- turn off all button hilites and reset left of answer fields
  136.     set sysLockScreen to true
  137.     step i from 1 to 4
  138.         set the invert of button ("ans" && i) of this background to FALSE
  139.     end step
  140.     set sysLockScreen to false
  141. end hideHilite
  142.  
  143. to handle hideFB
  144.     -- hide all feedback fields
  145.     step i from 1 to 4
  146.         hide recordField ("fb" && i)
  147.     end step
  148. end hideFB
  149.  
  150. to handle setAnswer
  151.     -- flash the text of the field back field and reset the correct answer
  152.     set the name of this page to "qz" & word 2 of the name of the target
  153.     step ht_1 from 1 to 4
  154.         select textLines 1 to 5 of the target
  155.         pause 15 ticks
  156.         select null
  157.     end step
  158. end setAnswer
  159.  
  160. to handle showHelp state
  161.     -- show help field
  162.     set the sysLockScreen to true
  163.  
  164.     put the objects of this page into objList
  165.  
  166.     step i from 1 to itemCount(objList)
  167.         set the visible of item i of objList to NOT state
  168.     end step
  169.  
  170.     set the visible of recordField "help" to state
  171.     set the sysLockScreen to FALSE
  172. end showHelp
  173.  
  174. --------------------------------
  175. -- quiz card scripts
  176. --------------------------------
  177.  
  178. to handle setUpQuiz
  179.         system qList,qPointer,qMax,qScore,reviewList,qTries
  180.  
  181.     --    qList:       item list of the question cards
  182.     --    qPointer:    item number of current question
  183.     --    qMax:        total number of questions
  184.     --    reviewList:  names of missed questions
  185.     --    qTries:      number of quiz attempts
  186.  
  187.     hide button "self-test" of this background
  188.     show button "topics" of this background
  189.  
  190.     -- initialize variables for quiz section
  191.  
  192.     put the pageCount of background "quiz" into qMax
  193.     put scrambleItems(qMax) into qList
  194.     put 0 into qPointer
  195.     put 0 into qScore
  196.     increment qTries by 1
  197.     put null into reviewList
  198.  
  199. end setUpQuiz
  200.  
  201. to handle nextQuiz
  202.     -- advance to next quiz question
  203.     --    qPointer: current quiz question
  204.     --    qMax:     total number of quiz questions
  205.     --    qList:    item list of quiz questions
  206.  
  207.     system qPointer,qMax,qList
  208.  
  209.     if qPointer = qMax then;
  210.         -- if this was last quiz, go to finish screen
  211.         go page "done quiz"
  212.     else
  213.         -- go to quiz card
  214.         increment qPointer by 1
  215.         go page (item qPointer of qList) of background "quiz"
  216.  
  217.     end if
  218. end nextQuiz
  219.  
  220. to get scrambleItems nItems
  221.     -- randomly scrambles list of numbers from 1 to nItems
  222.  
  223.         put null into theList
  224.     step i from 1 to nItems
  225.         push i onto theList
  226.     end step
  227.  
  228.     step ht_1 from 1 to nItems
  229.         -- random by swapping items in list
  230.         put random (nItems) into firstOne
  231.         put random (nItems) into secondOne
  232.         put item firstOne of theList into temp
  233.         put item secondOne of theList into item firstOne of theList
  234.         put temp into item secondOne of theList
  235.     end step
  236.  
  237.     return theList
  238. end scrambleItems
  239.  
  240. ---------------------------------------------------------------------------
  241.  
  242. | Book | Background | Results Page | Certificate Page |
  243.  
  244. Results Page
  245.  
  246. to handle enterPage
  247.     send displayResults
  248. end enterPage
  249.  
  250. to handle leavePage
  251.     put null into text of field "results"
  252. end leavePage
  253.  
  254. to handle displayResults
  255.     -- calculate quiz scores
  256.  
  257.     system qMax,qScore,reviewList,theUser
  258.     -- VARIABLES
  259.     --     qMax:         total number of questions
  260.     --     qScore:       number correct on first answer
  261.     --     reviewList    list of missed questions by topic name
  262.  
  263.     -- precentage needed to pass
  264.     put 80 into passingScore
  265.  
  266.     set sysLockScreen to true
  267.     hide button "self-test" of this background
  268.     show button "topics" of this background
  269.     -- calculate score
  270.     put (qScore / qMax * 100) div 1 into userScore
  271.  
  272.     put "You scored" && qScore && "correct on the first try"\
  273.     && "out of a total of" && qMax && "questions, or" \
  274.     && userScore & "%." & crlf & crlf into text of  field "results"
  275.  
  276.     if (userScore >= passingScore) then;
  277.         -- user passed minimum
  278.         set the borderStyle of field "results" to rectangle
  279.       --  show button  "certificate" of this page
  280.         hide button  "redo" of this page
  281.         show button  "next" of this page
  282.         put "Since you exceeded " & passingScore & "%, you have passed the requirements"\
  283.         && "for this section of the Orient Express."\
  284.         & crlf & crlf & crlf\
  285.         & "CONGRATULATIONS," && word 1 of theUser && "!" & crlf & crlf\
  286.         & "Click on the arrow button to receive your Orient Express certificate."\
  287.         after text of  field "results"
  288.  
  289.         set the fontStyle of textline 6 of the text of field "results" to bold